home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Source Code
/
Visual Basic Source Code.iso
/
vbsource
/
cvdmbf
/
cvdmbf.bas
next >
Wrap
BASIC Source File
|
1995-05-09
|
6KB
|
234 lines
Declare Sub hmemcpy Lib "kernel" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Function CVD (X As String) As Double
If Len(X) <> 8 Then
MsgBox "Illegal Function Call"
Stop
End If
hmemcpy temp#, ByVal X, 8
CVD = temp#
End Function
Function CVDMBF (OldStringDP As String) As Double
Dim X, Sign, Exponent As Integer
Dim NewNum As String
Static ONA(0 To 7), NNA(0 To 7)
For X = 0 To 7
ONA(X) = Asc(Mid$(OldStringDP, X + 1, 1)): NNA(X) = 0
Next
Sign = ONA(6) And 128
Exponent = ONA(7) - 129 + 1023
NNA(6) = Exponent * 2 ^ 4 And 255
NNA(7) = (Exponent \ 2 ^ 4 And 255) Or Sign
For X = 6 To 1 Step -1
ONA(X) = ONA(X) * 2 ^ 1 And 255
ONA(X) = ONA(X) Or ONA(X - 1) \ 2 ^ 7 And 255
Next
ONA(0) = ONA(0) * 2 ^ 1 And 255
For X = 6 To 2 Step -1
NNA(X) = NNA(X) Or ONA(X) \ 2 ^ 4 And 255
NNA(X - 1) = ONA(X) * 2 ^ 4 And 255
Next
For X = 0 To 7
NewNum = NewNum + Chr$(NNA(X))
Next
CVDMBF = CVD(NewNum)
End Function
Function CVDTPR (OldStringTP As String) As Double
Dim X, Sign, Exponent As Integer
Dim NewNum As String
Static ONA(0 To 5), NNA(0 To 7)
For X = 0 To 5
ONA(X) = Asc(Mid$(OldStringTP, X + 1, 1))
Next
For X = 0 To 7
NNA(X) = 0
Next
Sign = ONA(5) And 128
Exponent = ONA(0) - 129 + 1023
NNA(6) = Exponent * 2 ^ 4 And 255
NNA(7) = (Exponent \ 2 ^ 4 And 255) Or Sign
For X = 5 To 2 Step -1
ONA(X) = ONA(X) * 2 ^ 1 And 255
ONA(X) = ONA(X) Or ONA(X - 1) \ 2 ^ 7 And 255
Next
ONA(0) = ONA(0) * 2 ^ 1 And 255
For X = 6 To 2 Step -1
NNA(X) = NNA(X) Or ONA(X - 1) \ 2 ^ 4 And 255
NNA(X - 1) = ONA(X - 1) * 2 ^ 4 And 255
Next
For X = 0 To 7
NewNum = NewNum + Chr$(NNA(X))
Next
CVDTPR = CVD(NewNum)
End Function
Function CVI (X As String) As Integer
If Len(X) <> 2 Then
MsgBox "Illegal Function Call"
Stop
End If
hmemcpy temp%, ByVal X, 2
CVI = temp%
End Function
Function CVL (X As String) As Long
If Len(X) <> 4 Then
MsgBox "Illegal Function Call"
Stop
End If
hmemcpy temp&, ByVal X, 4
CVL = temp&
End Function
Function CVS (X As String) As Single
If Len(X) <> 4 Then
MsgBox "Illegal Function Call"
Stop
End If
hmemcpy temp!, ByVal X, 4
CVS = temp!
End Function
Function CVSMBF (OldStringSP As String) As Single
Dim X, Sign, Exponent As Integer
Dim NewNum As String
Static ONA(0 To 3), NNA(0 To 7)
For X = 0 To 3
ONA(X) = Asc(Mid$(OldStringSP, X + 1, 1))
Next
For X = 0 To 7
NNA(X) = 0
Next
Sign = ONA(2) And 128
Exponent = ONA(3) - 129 + 1023
NNA(6) = Exponent * 2 ^ 4 And 255
NNA(7) = (Exponent \ 2 ^ 4 And 255) Or Sign
For X = 2 To 1 Step -1
ONA(X) = ONA(X) * 2 ^ 1 And 255
ONA(X) = ONA(X) Or ONA(X - 1) \ 2 ^ 7 And 255
Next
ONA(0) = ONA(0) * 2 ^ 1 And 255
For X = 6 To 4 Step -1
NNA(X) = NNA(X) Or ONA(X - 4) \ 2 ^ 4 And 255
NNA(X - 1) = ONA(X - 4) * 2 ^ 4 And 255
Next
For X = 0 To 7
NewNum = NewNum + Chr$(NNA(X))
Next
CVSMBF = CSng(CVD(NewNum))
End Function
Function MKD$ (X As Double)
temp$ = Space$(8)
hmemcpy ByVal temp$, X, 8
MKD$ = temp$
End Function
Function MKDMBF$ (OldNumberDP As Double)
Dim X, Sign, Exponent As Integer
Dim NewNum As String
Dim OldString As String
Static ONA(0 To 7), NNA(0 To 7)
OldNum# = OldNumberDP
OldString = MKD$(OldNum#)
For X = 0 To 7
ONA(X) = Asc(Mid$(OldString, X + 1, 1))
Next
Sign = ONA(7) And 128
Exponent = ((ONA(7) And 127) * 2 ^ 4 And 255) + (ONA(6) \ 2 ^ 4 And 255)
If Exponent Then Exponent = (Exponent + 129 - 1023) And 255
For X = 6 To 1 Step -1
NNA(X) = ONA(X) * 2 ^ 4 And 255
NNA(X) = NNA(X) Or ONA(X - 1) \ 2 ^ 4 And 255
Next
For X = 0 To 5
NNA(X) = NNA(X) \ 2 ^ 1 And 255
NNA(X) = NNA(X) Or NNA(X + 1) * 2 ^ 7 And 255
Next
NNA(6) = NNA(6) \ 2 ^ 1 And 255
NNA(6) = NNA(6) Or Sign
NNA(7) = Exponent
MKDMBF$ = Space$(8)
For X = 0 To 7
Mid$(MKDMBF$, X + 1, 1) = Chr$(NNA(X))
Next
End Function
Function MKDTPR$ (OldNumberDP As Double)
Dim X, Sign, Exponent As Integer
Dim NewNum, OldString As String
Static ONA(0 To 7), NNA(0 To 5)
OldNum# = OldNumberDP
OldString = MKD$(OldNum#)
For X = 0 To 7
ONA(X) = Asc(Mid$(OldString, X + 1, 1))
Next
Sign = ONA(7) And 128
Exponent = (((ONA(7) And 127) * 2 ^ 4 And 255) + (ONA(6) \ 2 ^ 4 And 255) + 129 - 1023) And 255
For X = 5 To 1 Step -1
NNA(X) = ONA(X + 1) * 2 ^ 4 And 255
NNA(X) = NNA(X) Or ONA(X) \ 2 ^ 4 And 255
Next
For X = 1 To 4
NNA(X) = NNA(X) \ 2 ^ 1 And 255
NNA(X) = NNA(X) Or NNA(X + 1) * 2 ^ 7 And 255
Next
NNA(5) = NNA(5) \ 2 ^ 1 And 255
NNA(5) = NNA(5) Or Sign
NNA(0) = Exponent
MKDTPR$ = Space$(6)
For X = 0 To 5
Mid$(MKDTPR$, X + 1, 1) = Chr$(NNA(X))
Next
End Function
Function MKI$ (X As Integer)
temp$ = Space$(2)
hmemcpy ByVal temp$, X%, 2
MKI$ = temp$
End Function
Function MKL$ (X As Long)
temp$ = Space$(4)
hmemcpy ByVal temp$, X&, 4
MKL$ = temp$
End Function
Function MKS$ (X As Single)
temp$ = Space$(4)
hmemcpy ByVal temp$, X!, 4
MKS$ = temp$
End Function
Function MKSMBF$ (OldNumberSP As Single)
Dim X, Sign, Exponent As Integer
Dim OldString As String
ReDim ONA(0 To 7)
ReDim NNA(0 To 3)
OldString = MKD$(CDbl(OldNumberSP))
For X = 0 To 7
ONA(X) = Asc(Mid$(OldString, X + 1, 1))
Next
Sign = ONA(7) And 128
Exponent = ((ONA(7) And 127) * 2 ^ 4 And 255) + (ONA(6) \ 2 ^ 4 And 255)
If Exponent Then Exponent = (Exponent + 129 - 1023) And 255
For X = 2 To 0 Step -1
NNA(X) = ONA(X + 4) * 2 ^ 4 And 255
NNA(X) = NNA(X) Or ONA(X + 3) \ 2 ^ 4 And 255
Next
For X = 0 To 1
NNA(X) = NNA(X) \ 2 ^ 1 And 255
NNA(X) = NNA(X) Or NNA(X + 1) * 2 ^ 7 And 255
Next
NNA(2) = NNA(2) \ 2 ^ 1 And 255
NNA(2) = NNA(2) Or Sign
NNA(3) = Exponent
MKSMBF$ = Space$(4)
For X = 0 To 3
Mid$(MKSMBF$, X + 1, 1) = Chr$(NNA(X))
Next
End Function